#ifndef _REGISTER_H_
#define _REGISTER_H_

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "common.h"

// 定义section处理函数的类型
// ep :是用过devName调用参数得到
// ti :是通过参数组装的结构体，每个接口都用
// req :是入参，不一定每个接口都有
typedef void (*SectionHandlerTwo)(int *ep, BaseInfo_t *ti );
typedef void (*SectionHandlerThree)(int *ep, BaseInfo_t *ti, void* req );

// 定义section信息结构体
typedef struct {
    const char* name;               // section名称
    void* data;                     // 存储数据的结构体
    SectionHandlerTwo handler2;     // 处理函数
    SectionHandlerThree handler3;   // 处理函数
} SectionInfo;

// 全局section信息数组
SectionInfo sections[MAX_SECTIONS];
extern int section_count;

void register_section(const char* name, void* data, SectionHandlerTwo handler2, SectionHandlerThree handler3);

void process_section0(int *ep, BaseInfo_t *ti);

void process_section1(int *ep, BaseInfo_t *ti, void* data);

void process_section2(int *ep, BaseInfo_t *ti, void* data);

#endif